package com.gobang.service;

/**
 * 游戏算法接口
 * 提供五子棋游戏的核心算法功能
 * 
 * @author System
 * @since 1.0.0
 */
public interface GameAlgorithm {

    /**
     * 五子连珠胜负判定
     * 检查指定位置落子后是否形成五子连珠
     *
     * @param board 棋盘状态 15x15二维数组（0-空位，1-黑子，2-白子）
     * @param row 落子行坐标
     * @param col 落子列坐标
     * @param color 棋子颜色值（1-黑子，2-白子）
     * @return 是否达成五子连珠
     */
    boolean checkWin(int[][] board, int row, int col, int color);

    /**
     * 检查指定位置是否可以落子
     * 验证坐标合法性和位置空闲性
     *
     * @param board 棋盘状态
     * @param row 行坐标
     * @param col 列坐标
     * @return 是否可以落子
     */
    boolean isValidMove(int[][] board, int row, int col);

    /**
     * 初始化空棋盘
     * 创建15x15的空棋盘
     *
     * @return 初始化的空棋盘
     */
    int[][] initializeBoard();

    /**
     * 复制棋盘状态
     * 创建棋盘的深拷贝
     *
     * @param board 原棋盘
     * @return 复制的棋盘
     */
    int[][] copyBoard(int[][] board);

    /**
     * 统计棋盘上的棋子数量
     *
     * @param board 棋盘状态
     * @return 棋子总数
     */
    int countPieces(int[][] board);
} 